package exception

type Exception struct {
	Code int    `json:"code"`
	Msg  string `json:"codeDesc"`
}

func NewUncatchedException(msg ...string) Exception {
	exception := Exception{}
	exception.Code = 1
	exception.Msg = "System error - uncatched exception"
	if len(msg) > 0 && len(msg[0]) > 0 {
		exception.Msg = msg[0]
	}
	return exception
}

func NewDBException(msg ...string) Exception {
	exception := Exception{}
	exception.Code = 4
	exception.Msg = "Mysql error"
	if len(msg) > 0 && len(msg[0]) > 0 {
		exception.Msg = msg[0]
	}
	return exception
}

func NewMongoException(msg ...string) Exception {
	exception := Exception{}
	exception.Code = 5
	exception.Msg = "Mongo error"
	if len(msg) > 0 && len(msg[0]) > 0 {
		exception.Msg = msg[0]
	}
	return exception
}

func NewRedisException(msg ...string) Exception {
	exception := Exception{}
	exception.Code = 6
	exception.Msg = "Redis error"
	if len(msg) > 0 && len(msg[0]) > 0 {
		exception.Msg = msg[0]
	}
	return exception
}

func NewParamException(msg ...string) Exception {
	exception := Exception{}
	exception.Code = 3
	exception.Msg = "Invalidated parameter"
	if len(msg) > 0 && len(msg[0]) > 0 {
		exception.Msg = msg[0]
	}
	return exception
}
